﻿#define _CRT_SECURE_NO_WARNINGS 1

/*
给定一个由 整数 组成的 非空 数组所表示的非负整数，在该数的基础上加一。
最高位数字存放在数组的首位， 数组中每个元素只存储单个数字。
你可以假设除了整数 0 之外，这个整数不会以零开头。
输入：digits = [1,2,3]
输出：[1,2,4]
解释：输入数组表示数字 123。
*/
/**
 * Note: The returned array must be malloced, assume caller calls free().
 */
//int* plusOne(int* digits, int digitsSize, int* returnSize) {
//    int flag = 0;
//    int i = 0;
//    if (digits[0] == 0)
//    {
//        int* p = (int*)calloc(1, 4);
//        p[0] = 1;
//        *returnSize = 1;
//        return p;
//    }
//    for (i = digitsSize - 1; i >= 0; i--)
//    {
//        digits[i] = (digits[i] + 1) % 10;
//        if (digits[i] == 0)
//            continue;
//        else
//            break;
//    }
//    if (digits[0] == 0)
//        flag = 1;
//    *returnSize = flag + digitsSize;
//    int* p = (int*)calloc(*returnSize + flag + 1, 4);
//
//    if (flag)
//    {
//        p[0] = 1;
//        //memcpy(p+1,digits,(*returnSize));
//    }
//    else
//    {
//        memcpy(p, digits, 4 * (*returnSize));
//    }
//    return p;
//}


/*
给你一个非负整数 x ，计算并返回 x 的 算术平方根 。
由于返回类型是整数，结果只保留 整数部分 ，小数部分将被 舍去 。
注意：不允许使用任何内置指数函数和算符，例如 pow(x, 0.5) 或者 x ** 0.5 。
输入：x = 4
输出：2
*/



/*
int mySqrt(int x){
    if(0<x&&x<4)
    return 1;
    if(x==0)
    return 0;
    if(x==4||x<9)
    return 2;
    if(x==9||x<16)
    return 3;
    if(x==16||x<25)
    return 4;
    if(x==25||x<36)
    return 5;

    int i=1,j=x/4;
    //1 2 3 4 5 6 7 8
    int mid=(i+j)/2;
    while(i+1<j)
    {

        if(mid>x/mid)
        {
            j=mid;
        }
        else if(mid<x/mid)
        {
            i=mid;
        }
        else
        {
            i=mid;
            break;
        }
        mid=(i+j)/2;
    }
    return i;

}*/



/*
给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。
判断该树中是否存在 根节点到叶子节点 的路径，
这条路径上所有节点值相加等于目标和 targetSum 。如果存在，返回 true ；否则，返回 false 。
*/
/*

 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };

bool hasPathSum(struct TreeNode* root, int targetSum){
    if(root==NULL)
    {
        return 0;
    }
    if(root->left==NULL&&root->right==NULL)
    {
        //printf("%d ",root->val);
        if(targetSum==root->val)
            return 1;
        else
            return 0;
    }
    else
    {
        if(hasPathSum(root->left,targetSum-root->val)||hasPathSum(root->right,targetSum-root->val))
            return 1;
        else
            return 0;
    }
}*/

